import time


#tab
''' 时间戳：
        1. 每个时间戳都以自从 1970 年 1 月 1 日午夜（历元）经过了多长时间来表示（秒）
        2. 时间戳单位最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行，UNIX和Windows只支持到2038年
        3. 数据类型：float
    '''
# 获取时间戳
t1 = time.time()


#tab
''' 时间元组：
    struct_time 属性：
        tm_year：---------- 4 位数年份
        tm_mon：----------- 月（1 - 12）
        tm_mday：---------- 日（1 - 31）
        tm_hour：---------- 小时（0 - 23）
        tm_min：----------- 分种（0 - 59）
        tm_sec：----------- 秒（0 - 61）（60、61 是闰秒）
        tm_wday：---------- 周几（0 - 6）（0 是周一）
        tm_yday：---------- 一年中的第几天（1 - 366）
        tm_isdst：--------- 是否为夏令时，值有：1(夏令时)、0(不是夏令时)、-1(未知)，默认 -1
    '''
# 由 时间戳 获取 时间元组（struct_time）
t2 = time.localtime(time.time())


#tab
''' 时间格式化：
        时间格式化符号：
        %y  两位数的年份表示（00-99）
        %Y  四位数的年份表示（000-9999）
        %m  月份（01-12）
        %d  月内中的一天（0-31）
        %H  24小时制小时数（0-23）
        %I  12小时制小时数（01-12）
        %M  分钟数（00=59）
        %S  秒（00-59）
        %a  本地简化星期名称
        %A  本地完整星期名称
        %b  本地简化的月份名称
        %B  本地完整的月份名称
        %c  本地相应的日期表示和时间表示
        %j  年内的一天（001-366）
        %p  本地A.M.或P.M.的等价符
        %U  一年中的星期数（00-53）星期天为星期的开始
        %w  星期（0-6），星期天为星期的开始
        %W  一年中的星期数（00-53）星期一为星期的开始
        %x  本地相应的日期表示
        %X  本地相应的时间表示
        %Z  当前时区的名称
        %%  %号本身
    '''
    
    
#tab
''' 简单格式化 - time.asctime()：
        接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"（2008年12月11日 周二18时07分14秒）的24个字符的字符串
            输入：时间元组
    '''
# 简单格式化
t3 = time.asctime(time.localtime(time.time()))


#tab
''' 自定义格式化 - time.strftime()：
        接受时间元组，并返回以可读字符串表示的当地时间，格式由fmt决定
            输入：格式 + 时间
    '''
# 自定义格式化
t4 = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())


#tab
''' 格式化 转 时间戳：
        time.mktime(tupletime)：
            接受时间元组并返回时间戳（1970纪元后经过的浮点秒数）
                输入：时间元组
        time.strptime(str,fmt='...')：
            根据fmt的格式把一个时间字符串解析为时间元组。
                输入：时间字符串 + 格式
    '''
# 时间字符串 转 时间戳（包含：时间字符串 转 时间元组、时间元组 转 时间戳）
t5 = time.mktime(time.strptime("Sat Mar 28 22:24:24 2016","%a %b %d %H:%M:%S %Y"))


#tab
''' 获取，给定时间、给定间隔、给定前后的时间戳：
    @参数：
        time_parameter：给定的时间
        time_part：给定的时间间隔
        unit：时间间隔的单位
        direction：定位方向
            1：向未来定位
            -1：向过去定位
    @返回：
        时间戳
    '''
def get_time_by_timepart(time_parameter,time_part,unit={'day','hour','min','sec'},direction={1,-1}):
    # 确定part的单位
    if str(unit) == 'day':
        unit = 86400
    if str(unit) == 'hour':
        unit = 3600
    if str(unit) == 'min':
        unit = 60
    if str(unit) == 'sec':
        unit = 1
    # 确定时间间隔
    time_part = time_part * unit
    # 返回指定时间
    if direction == 1:
        return time_parameter + time_part
    if direction == -1:
        return time_parameter - time_part




